package cn.tedu.medicalappointmentsystemk.service;

import cn.tedu.medicalappointmentsystemk.consts.data.AccountConsts;
import cn.tedu.medicalappointmentsystemk.pojo.bo.DepartmentSelectBO;
import cn.tedu.medicalappointmentsystemk.pojo.bo.DepartmentSelectLevelBO;
import cn.tedu.medicalappointmentsystemk.pojo.bo.DepartmentSelectByIdBO;
import cn.tedu.medicalappointmentsystemk.pojo.bo.DoctorSelectTypeBO;
import cn.tedu.medicalappointmentsystemk.pojo.param.DepartmentAddParam;
import cn.tedu.medicalappointmentsystemk.pojo.param.DepartmentUpdateParam;
import cn.tedu.medicalappointmentsystemk.pojo.po.PageData;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface DepartmentService extends AccountConsts {
    void addDepartment(DepartmentAddParam departmentAddParam);

    void updateDepartment(DepartmentUpdateParam departmentUpdateParam,Long userId);

    DepartmentSelectByIdBO selectDepartmentById(Long id);

    List<DepartmentSelectLevelBO> selectDepartmentLevel(Long id);

    PageData<DepartmentSelectBO> selectDepartment(Integer pageNum);

    void deleteDepartment(Long id);

    List<DoctorSelectTypeBO> selectDoctorByDepartmentId(Long id);

    List<DepartmentSelectLevelBO> selectDepartmentLevel();

    PageData<DepartmentSelectBO> searchLastWeek(Integer pageNum);

    PageData<DepartmentSelectBO> searchLastMonth(Integer pageNum);

    PageData<DepartmentSelectBO> searchToday(Integer pageNum);

    List<DepartmentSelectBO> selectByName(String name);
}
